package cn.daomeng.firebird.core.common.annotation;

import cn.daomeng.firebird.core.exception.FirebirdException;
import cn.daomeng.firebird.core.utils.StringUtils;
import cn.hutool.json.JSONUtil;

import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
import java.util.List;

/**
 * @Description: 公共常量类
 * @author qsl
 * @date 2019/4/11
 **/
public class IsOneOfThemIntValiadator implements ConstraintValidator<IsOneOfThemInt, Integer> {

    /**注意的是:ConstraintValidator<IsMobile, String>
     * 第一个参数就是自定义注解的名字 第二个就是注解修饰的字段类型
     */

    //申明一个required 默认的值为false
    public boolean required = false;
    public String expression ;

    @Override
    public void initialize(IsOneOfThemInt constraintAnnotation) {
        //初始化:拿到IsMobile中的required中的值
        required = constraintAnnotation.requried();
        expression= constraintAnnotation.expression();
        if(StringUtils.isBlank(expression)){
            throw new FirebirdException("注解IsOneOfThemInt使用有问题，参数expression不合法");
        }
    }
    @Override
    public boolean isValid(Integer value, ConstraintValidatorContext context) {
        // 非必填时，那么参数为空的时候直接返回true
        if(!required && value == null){
            return true;
        }
        List<Integer> userIdList = JSONUtil.toList(JSONUtil.parseArray(expression), Integer.class);
        for (Integer userId: userIdList) {
            if(value == userId){
                return true;
            }
        }
        return false;
    }
}
